Kubernetes,因為名字太長了,在首字母K和尾字母s中間有8個英文字故簡稱K8s,最初由Google開發,並捐贈給Cloud Native Computing Foundation,是一個部署容器化應用程式的開源編排器 (orchestrator),他的功能如下:
微服務和 k8s 息息相關,也是 k8s 之所以存在最主要的目的:管理微服務,在以前的程式專案中,可能整包程式碼便包含了整個程式的所有部件(像是web application就把前後端的程式碼都包在一起),好處是只需要維護一部分程式碼就好,但也是因為全部的程式碼都用同一個語言寫在一起,後續的維護、擴展都會受到限制,因此,就有人想到了把服務內容拆分成部件,利用類似於堆積木的方式,互相使用API作為溝通,並組合成一個大系統。簡單來說,採用微服務的好處有以下幾點:
在正式進入介紹k8s的名詞之前,先以簡單的方式來講解k8s的架構,不然直接放出下面這張圖也有點嚇人(OwO)
下面這一張圖,是在k8s docs的第一張小圖,我們可以從這張圖來簡單的了解一下k8s的架構
在最左側的部分,有著不同顏色所組成的圓圈,他們代表的就是各式各樣的微服務,跟docker中的每一個container意義是一樣的,但是在k8s中,會將這每一個應用服務,以 Pod
這個名稱來稱呼,這是k8s服務中的最小單位,每個pod都有各自識別用的yml,並可以以API來溝通;
接著來到中間K8s Logo的部分,他代表著k8s的管理部分的功能,叫做 control plane
,負責管理health check和資源調度等,可以說是k8s最重要的一部分。
最後則是node的部分:我們會把運行一個運作單位稱作為node,依工作內容可再分為master node 跟worker node (slave node),當所有的node組合在一起,就稱為 Cluster
。